From b24690e3ccf4a23192e56b020f60f0e8063a198a Mon Sep 17 00:00:00 2001 From: "kfraser@localhost.localdomain" Date: Mon, 25 Sep 2006 09:29:28 +0100 Subject: [PATCH] [XEN] Use symbolic constants to determine segment limits. Signed-off-by: Jan Beulich --- xen/arch/x86/boot/x86_32.S | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/xen/arch/x86/boot/x86_32.S b/xen/arch/x86/boot/x86_32.S index 2e56403b66..f981f62057 100644 --- a/xen/arch/x86/boot/x86_32.S +++ b/xen/arch/x86/boot/x86_32.S @@ -218,28 +218,24 @@ nopaging_gdt_descr: .word LAST_RESERVED_GDT_BYTE .long gdt_table - FIRST_RESERVED_GDT_BYTE - __PAGE_OFFSET - .org 0x1000 -/* NB. Rings != 0 get access up to 0xFC400000. This allows access to the */ -/* machine->physical mapping table. Ring 0 can access all memory. */ + .align PAGE_SIZE, 0 +/* NB. Rings != 0 get access up to MACH2PHYS_VIRT_END. This allows access to */ +/* the machine->physical mapping table. Ring 0 can access all memory. */ +#define LIMIT(d) (((d) << 16) \ + | (((MACH2PHYS_VIRT_END - 1) >> 12) & 0xffff) \ + | (((MACH2PHYS_VIRT_END - 1) << 20) & (0xf << 48))) ENTRY(gdt_table) .quad 0x0000000000000000 /* unused */ .quad 0x00cf9a000000ffff /* 0xe008 ring 0 4.00GB code at 0x0 */ .quad 0x00cf92000000ffff /* 0xe010 ring 0 4.00GB data at 0x0 */ -#ifdef CONFIG_X86_PAE - .quad 0x00cfba00000067ff - .quad 0x00cfb200000067ff - .quad 0x00cffa00000067ff - .quad 0x00cff200000067ff -#else - .quad 0x00cfba000000c3ff /* 0xe019 ring 1 3.95GB code at 0x0 */ - .quad 0x00cfb2000000c3ff /* 0xe021 ring 1 3.95GB data at 0x0 */ - .quad 0x00cffa000000c3ff /* 0xe02b ring 3 3.95GB code at 0x0 */ - .quad 0x00cff2000000c3ff /* 0xe033 ring 3 3.95GB data at 0x0 */ -#endif + .quad LIMIT(0x00c0ba000000) /* 0xe019 ring 1 3.xxGB code at 0x0 */ + .quad LIMIT(0x00c0b2000000) /* 0xe021 ring 1 3.xxGB data at 0x0 */ + .quad LIMIT(0x00c0fa000000) /* 0xe02b ring 3 3.xxGB code at 0x0 */ + .quad LIMIT(0x00c0f2000000) /* 0xe033 ring 3 3.xxGB data at 0x0 */ .quad 0x0000000000000000 /* unused */ .fill 2*NR_CPUS,8,0 /* space for TSS and LDT per CPU */ - .org 0x2000 + .align PAGE_SIZE, 0 #ifdef CONFIG_X86_PAE ENTRY(idle_pg_table) -- 2.30.2